# Copyright 2022 ByteDance Ltd. and/or its affiliates.
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
import matx
from typing import List
import time


def join_prefix_suffix(inputs: List[str]) -> str:
    return ' '.join(inputs)


def benchmark_entry(inputs: List[str], loops: int) -> str:
    r = None
    for i in range(loops):
        r = join_prefix_suffix(inputs)
    return r


def get_exe_time(func_impl, conv=False):
    # test case
    inputs = ['abc中文', 'bbc中文', 'cdhh'] * 100
    if conv:
        inputs = matx.List(inputs)
    func_impl(inputs, 1)
    begin = time.time()
    func_impl(inputs, 10000)
    end = time.time()
    return "%.2f(ms)" % ((end - begin) * 1000)


print("Python timecost", get_exe_time(benchmark_entry, False))
print("MatxScript timecost", get_exe_time(matx.script(benchmark_entry), True))
